# 作者: 赵若云
# 2025年02月19日10时31分03秒
# 3478783573@qq.com

# 集合无序，不能用下标，自动去重

def use_set():
    my_set = {'apple', 'banana', 'cherry'}
    # my_set = {}  # 空字典
    # my_set = set()  # 空集合
    print(my_set)
    print(type(my_set))

    my_set = {'apple', 'banana', 'cherry'}
    print('apple' in my_set)  # True


def use_copy():
    a = [1, 2, 3]
    # b = a  # a,b指向同一个位置
    # b = [1, 2, 3]  # 这种情况，b与a不指向同一个位置，a变b变，b变a也变
    b = a.copy()  # a,b指向不同的位置
    print(f'id(a) = {id(a)},id(b) = {id(b)}')
    a[0] = 5
    print(b)


def use_set_sym():
    """
    练习集合的快捷操作
    :return:
    """
    a = set('abracadabra')
    b = set('alacazam')
    print(a, b)
    print(a - b)  # difference
    print(a & b)  # 交集
    print(a | b)  # 并集
    print(a ^ b)  # 异或，并集-交集


# use_copy()
use_set_sym()

# 小int、string会有缓存
# 引用计数为0，对应的对象就会被释放
# eg.
# a = b  # a，b指向同一个
# del a
# del b  # 这里对象才会完全释放，不需要精确管理eg.free
